import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Inherited;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

/**
 * 自定义的Annotation。
 *
 *该Annotation的类型是ElementType.METHOD该Annotation能用来修饰方法;
 * 该Annotation的策略是 RetentionPolicy.RUNTIME,
 *这就意味着，编译器会将该 Annotation 信息保留在 .class 文件中，并且能被虚拟机读取;
 * Inherited 的含义是该Annotation将具有继承性；
 * interface的含义是实现了 java.lang.annotation.Annotation接口，
 * 即 InitMethod就是一个注解。
 * */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@interface InitMethod
{
    String[] value() default "unknown";
}



public class MyClass {
    @InitMethod(value = {"man","women"})//自定义注解修饰init方法
    public void init(String name,int age){
        if(age<0){
            throw new IllegalArgumentException();
        }
        else
        System.out.println("\nPerson:"+name+","+age);
    }
}